Scalable and programmable mechanism for targeted in-situ oam implementation in segment routing networks

ABSTRACT

The present technology provides a system and method for implementing targeted collection of in-situ Operation, Administration and Maintenance data from select nodes in a Segment Routing Domain. The selection is programmable and is implemented by setting an iOAM bit in the function arguments field of a Segment Identifier. In this way only the nodes associated with local Segment Identifiers (Function field of a Segment Identifier) with an iOAM argument bit are directed to generate iOAM data. The iOAM data generated by target nodes may be stored in TLV field of the segment routing header. The Segment Routing packet is then decapsulated at a Segment Routing egress node and the Header information with the collected iOAM data is sent to a controller entity for further processing, analysis and/or monitoring.

TECHNICAL FIELD

The present technology pertains to in-situ collection of operational andtelemetry information in a data network. More specifically it isdirected to a scalable implementation of in-situ Operation,Administration and Maintenance data probing and collection in a SegmentRouting domain.

BACKGROUND

The ever increasing complexity and diversity of application traffichaving a diverse range of performance requirements has meant thatService Level Agreement (SLA) may now require routine verification ofservices provided, for example, by providing a proof of transit showingthat the traffic indeed follows the suggested application-specific path.Operation, Administration, and Maintenance (OAM) operations can beimplemented to obtain telemetry for all user traffic. However, thisapproach does not provide real-time results and significantly increasesthe number of messages or traffic propagating in a network, which mayalready be highly loaded or suffering performance issues.

In-situ Operation, Administration, and Maintenance (iOAM) recordsoperational and telemetry information in the packet while the packettraverses a path between two points in the network. One of thechallenges associated with the “In-situ OAM” mechanisms is thedifficulty to implement it in hardware without performance penalties.Enabling “In-situ OAM” probes on all transit nodes can potentiallyaffect the timing of the very stream targeted for monitoring andtroubleshooting. Furthermore, the nodes need to have an indicationsomewhere in the packet header that hardware needs to check for eachpacket in the network, regardless of whether “In-situ OAM” operation isenabled or not, thus causing additional hardware performance penalties.

BRIEF DESCRIPTION OF THE DRAWINGS

In order to describe the manner in which the above-recited and otheradvantages and features of the disclosure can be obtained, a moreparticular description of the principles briefly described above will berendered by reference to specific embodiments thereof which areillustrated in the appended drawings. Understanding that these drawingsdepict only exemplary embodiments of the disclosure and are nottherefore to be considered to be limiting of its scope, the principlesherein are described and explained with additional specificity anddetail through the use of the accompanying drawings in which:

FIG. 1 illustrates a Segment Identifier Format encoding an in-situ OAMprobe, in accordance to some embodiments of the present technology.

FIG. 2 illustrates two example segment routing headers, one with and theother without an in-situ OAM probe, in accordance to some embodiments ofthe present technology.

FIG. 3 illustrates a segment routing header with a targeted(node-specific) in-situ OAM probe included therein, in accordance tosome embodiments of the present technology.

FIG. 4 illustrates targeted iOAM data collection from selected SegmentRouting capable nodes, in accordance to some embodiments of the presenttechnology.

FIG. 5 illustrates a segment routing header transporting in-situ OAMdata in its Type, Length, Value (TLV) fields which is decapsulated bythe egress Segment Routing node and sent to a controller entity, inaccordance to some embodiments of the present technology.

FIG. 6 illustrates a flowchart for an example method of implementingtargeted iOAM probing in Segment Routing context, in accordance to someembodiments of the present technology

FIG. 7 illustrates an example network device in accordance to someembodiments of the present technology.

FIG. 8 illustrates an example architecture of a computing device, inaccordance to some embodiments of the present technology.

DESCRIPTION OF EXAMPLE EMBODIMENTS

Additional features and advantages of the disclosure will be set forthin the description which follows, and in part will be obvious from thedescription, or can be learned by practice of the herein disclosedprinciples. The features and advantages of the disclosure can berealized and obtained by means of the instruments and combinationsparticularly pointed out in the appended claims. These and otherfeatures of the disclosure will become more fully apparent from thefollowing description and appended claims, or can be learned by thepractice of the principles set forth herein.

Overview

Systems, methods and computer-readable storage media are disclosed forscalable and targeted collection of in-situ Operation, Administration,and Maintenance (iOAM) data in a programmable way in a Segment Routingcontext. In some examples, a method can involve encoding an iOAMinstruction as a local argument in the function field of one or moreSegment Identifiers (SID) selected from a listing of Segment Identifiers(SID list) specified in the segment routing header of a packet. The oneor more SIDs in the SID list of the segment routing header, whichfeature an iOAM argument bit in their respective function fields, cancorrespond to one or more Segment Routing nodes selected for iOAM datacollection. In some examples, this may be achieved by setting an iOAMbit in the function argument field of one or more Segment Identifier inthe Segment Identifier list.

The method can further involve sending the packet to the one or moresegment routing nodes based on the segment routing header, receiving apacket containing the iOAM data from the one or more Segment Routingnodes selected for iOAM data collection, and processing the iOAM datafrom the one or more Segment Routing nodes selected for iOAM datacollection. According to some examples, the iOAM data from the one ormore targeted Segment Routing nodes can be inserted into one or moreType, Length, Value (TLV) fields of the segment routing header of thepacket. An egress Segment Routing node can extract the Segment Routingheader, which includes the collected iOAM data from the selected SegmentRouting nodes, and send the information to a controller entity forfurther processing, analysis and/or monitoring. The egress segmentrouting node may forward the user data packet (e.g., a remaining portionof the Segment Routing encapsulated packet) towards its intendeddestination. Alternatively the one or more Segment Routing nodesselected for iOAM data collection may insert the generated iOAM datainto a duplicate copy of the Segment Routing header. The duplicate copywith the iOAM information included therein is sent to a controllerentity using a collector mechanism. The targeted/tapped Segment Routingnodes may then forward the Segment Routing packet with theheader-embedded iOAM probes onto the next hop along the Segment RoutingPath specified in the SID list.

In some examples, a Segment Routing ingress router that encapsulates theincoming packet with the segment routing header may be used to encodeiOAM probe(s) in the function field (or the local SID) of one or moreSegment Identifiers selected from the entries in the SID list of thesegment routing header. In other examples, selecting target segmentrouting nodes for iOAM data collection may be performed by a SegmentRouting Policy Headend router serving as a controller entity for bothselective iOAM probing and iOAM data collection from probed SegmentRouting nodes. The encapsulating Segment Routing ingress router and/orthe controller entity may programmably change, for example in a roundrobin fashion, the one or more Segment Routing nodes selected from theSID list of the segment routing header for iOAM probing.

EXAMPLE EMBODIMENTS

Disclosed are systems, methods, and non-transitory computer-readablestorage media for scalable programmable in-situ OAM implementation in aSegment Routing context. Various embodiments of the disclosure arediscussed in detail below. While specific implementations are discussed,it should be understood that this is done for illustration purposesonly. A person skilled in the relevant art will recognize that othercomponents and configurations may be used without parting from thespirit and scope of the disclosure.

Operations, administration and management (OAM) refer to a set ofprocesses, activities, tools and standards involved with operating,administering, managing and maintaining telecommunication systems andcomputer networks/hardware. It is often involved with fault managementand performance monitoring and may include measurements such as frameloss ratio, frame delay, frame delay variation, continuity checks toassist with Service Level Agreement (SLA) and capacity planning.

OAM functionality generally involves a set of network management toolsand functions that provide network fault indication, fault localization,performance information, and data and diagnostic functions. Theseoperations may involve automatic monitoring of environment, detectingand determining faults and alerting administrators, collectingperformance statistics, accounting data for the purpose of billing,capacity planning based on usage data and maintaining systemreliability. As such, OAM functionality enables effective faultdetection, verification, isolation and notification in carrier networks.

In-situ OAM (iOAM) can provide real-time telemetry for individual datapackets and flows. iOAM can include operational and telemetry data andmetadata embedded within live user traffic (packets that originate andterminate at the application layer). In iOAM, operational informationmay be recorded in the packet as it traverses a path between two pointsin the network. As described herein, “In-situ OAM” can be implemented ina IPv6 Segment Routed (SRv6) network by carrying appropriate data fieldsin the Type Length Value (TLV) fields of a segment routing header (SRH).A bit may be defined in the segment routing header that when set enablesin-situ OAM data collection.

The present technology describes methods, systems, for selective probingand collection of iOAM data from programmably selected target nodes in ascalable fashion. The present technology obviates the need to monitor abit in each incoming packet, as the instruction to perform iOAM functionis encoded in the argument field of the SRv6 SID function. This way onlynodes for which the local SID has the iOAM argument set will insert theiOAM data. A controller entity (SR policy headend) or a SR encapsulatingingress node may programmably change the iOAM target nodes or iOAMtapping points in order to construct the entire picture or model of howdata is traveling in the network, thus providing scalable andprogrammable in-situ OAM data collection.

Segment Routing (SR) allows a node to steer a packet through acontrolled set of instructions, called segments, by prepending a segmentrouting header (SRH) to the packet. A segment can represent any(forwarding) instruction, topological or service-based. Segment Routingallows for steering of a flow through any path (topological orservice/application based) while maintaining per-flow state only at theingress node of the SR domain. Segments can be derived from differentcomponents: IGP, BGP, Services, Contexts, Locators, etc. The list ofsegment defining an end-to-end forwarding path of the flow packets iscalled the Segment List and is encoded in the SRH of the packet.

In the IPv6 Segment Routing architecture, a Segment Identifier (SID) maybe represented as an IPv6 address modeled as a Locator and a Function.The Locator, as represented by the most significant bits of the address,is used to route the packet to the associated segment (i.e., the nodecorresponding to the segment). The Function, as represented by the leastsignificant bits of the address, may be used to identify the action tobe performed by the segment (i.e., the node corresponding to thesegment). Optionally, the function bits may include local arguments,which are encoded in the last bits of the address. The specific addressformat (i.e., number of bits allocated to each field) is entirelyflexible as it may be defined locally by the parent node. SIDreachability is made possible by advertising the locator prefix withinthe routing protocol domain.

Treatment of OAM operation as a SID function, as disclosed by someembodiments of the present technology, enables the implementation of aprogrammable in-situ OAM. Consequently, instead of only providing aglobal end-to-end behavior, service providers may control OAM featureson a node-by-node basis, enabling specific OAM operations to beperformed on selected node(s). The iOAM enabled Segment Identifierincludes an iOAM argument bit(s) in the Function field of the SegmentIdentifier. This may include flipping a bit in the appropriate argumentportion of the Segment Identifier's Function field.

FIG. 1 illustrates an example format for a Segment Identifier (SID) 100carrying an iOAM instruction. The Segment Identifier 100 includes aroutable Locator field 102. As stated above, the locator information isencoded by the first most significant bits of the Segment Identifier andrepresents an address of a particular Segment Routing node (parent nodeof the local SID) and it is therefore used for routing in a SegmentRouting domain. The remaining SID bits constitute the Function field 104which identifies the function that is executed locally on a particularnode, specified by the locator bits. The Function field 104 furthercomprises a portion 106 for identifying the type of operation to beperformed (Op Code) and a portion 108 for storing one or moreparameters/arguments that may be required for performing the operationidentified by the Op Code (i.e., arguments passed to the function).Presence of iOAM argument bit(s) 110 in the argument portion 108 of theFunction field 104 prompt the targeted Segment Routing node to take aspecific action such as cloning the Function (104) with iOAM dataoperations.

Segment Routing deployments can be used to deliver customized serviceswith stringent performance requirements, details of which may beexplicitly set forth in a service level agreements (SLA). Ensuring thatsuch service-level guarantees are met may require routine monitoring toverify that a forwarding path across the network is in compliance withthe implemented Segment Routing policy and the provisions of theassociated Service Level Agreement. To address this requirement, iOAMprobing may be implemented to verify a particular Segment Routing policyby monitoring the live data as it is steered across the Segment Routingpath. However, implementing this in hardware amount to enabling in-situOAM probe on all transit nodes which may potentially affect the timingof the actual traffic stream being probed. Therefore some performancepenalties may result from the performance measurement operation itself.Additionally, the aforementioned Hardware implemented iOAM probingscheme may further incur additional hardware performance penalties asthe examination of header information is performed for all incomingpackets, regardless of whether the in-situ OAM is enabled or not.

In the context of Segment Routing based IPv6 (SRv6) networks, iOAM dataprobing and collection may involve provisioning iOAM data-fields in theType Length Value (TLV) field of the segment routing header. MoreoveriOAM probing operation may involve setting a bit (i.e., O-flag) definedin the segment routing header, which when set indicates that iOAM datacollection is enabled. This approach, however, is also susceptible toperformance constraints discussed above.

Generally, in-situ OAM (iOAM) data collection is expected to be deployedin a specific domain rather than on the overall Internet. The part ofthe network which employs iOAM is referred to as the iOAM domain.In-situ OAM data is added to a packet upon entering the iOAM-domain andis removed from the packet when exiting the domain. Within theiOAM-domain, the iOAM data may be updated by network nodes that thepacket traverses. The device which adds an iOAM data container to thepacket to capture iOAM data is called the iOAM encapsulating nodewhereas the device which removes the iOAM data container is referred toas the iOAM decapsulating node. Nodes within the domain which are awareof iOAM data and read and/or write or process the iOAM data are callediOAM transit nodes. Restricting the proliferation boundary of iOAM inthis way serves to contain the iOAM signaling and data transport trafficalong with the resulting processing load within the iOAM domain thuskeeping it away from the rest of the network.

The present technology enables selective collection of iOAM data fromtarget nodes in a programmable fashion. Embodiments of the presenttechnology obviate the need to monitor “a” bit (iOAM flag) in eachincoming packet, as the instruction to perform iOAM function is encodedin the argument field of the SRv6 SID function. This way only nodes forwhich the local SID has the iOAM argument set will insert iOAM data.According to some embodiments an SRv6 Policy headend/controller entitymay programmably change the iOAM tapping points (devices/nodes selectedfor iOAM collection) to construct a comprehensive picture of how data istraveling in the network.

Some aspects involve a programmable iOAM implementation that enables auser/operator to specifically select the node from which to collect thedesired iOAM data. The iOAM data may be injected into the header of thedata packet by the specified node as it forwards the packet onto itsnext hop. Alternatively a duplicate copy of the packet with the iOAMinformation inserted therein may be sent to a device, such as acontroller entity, using appropriate collector mechanism such asNetflow/IPFIX. An example implementation of programmable iOAM isillustrated in FIG. 2.

FIG. 2 illustrates an example Segment Routing path/policy 202 wheretraffic coming from a User Equipment (i.e., smart phone) denoted as Node0 is steered into a Segment Routing policy at gNodeB (Node 1). TheSegment Routing policy steers the traffic via User Plane Function 1(Node 2) to the Traffic Engineering or service chaining node (Node 3)and finally terminates the flow at User Plane Function 2 (Node 4) whichis the end point of the Segment Routing policy 202. The ingress SegmentRouting Node (Node 1) encapsulates the incoming flow packet from theUser Equipment (Node 0) into a SRv6 packet 203. The SRv6 packet 203comprises an outer IPv6 header 204 which further contains the segmentrouting header 208. The original user data packet 210 is left unmodifiedas the payload. The Source Address (SA) of the packet is the ingressnode, the Destination Address (DA) is set as the first segment of thepath, which corresponds to Node 2 in the example Segment Routing path202.

With reference to notations included in the segment routing header inFIG. 2; Node SIDs are represented as an alphabetic letter followed bythe node number. For example, Node 2, 3 and 4 correspond to SIDs A2, A3and A4, respectively. Notation A behind the node number indicate thatthe node/router is Segment Routing capable. Notation B behind the nodenumber indicate that the node is a classic IPv6 transit node.

The segment routing header (SRH) 208 includes a Segment Identifier (SID)list which corresponds to a list of segments that define the steeringpath of the packets (i.e., Segment Routing Path 202 in FIG. 1). TheSegment List is encoded starting from the last segment of the path(i.e., the first element of the segment list (A4) corresponds to thelast segment of the path (Node 4), the second element (A3::C34) containsthe penultimate segment of the path (Node 3) and so on). The identifierC34 attached to A3 (Locator SID portion) specifies a function to beperformed locally at Node 3. The function or operation denoted by C34may include switching the packet onto a specific outgoing interface oradjacency link that connects to Node 4 (last segment of the path and theegress node of the Segment Routing policy domain 202). Therefore the SIDlist representing the Segment Routing path 202 is expressed in thesegment routing header 208 as (A2::, A3::C34, A4::).

Segments Left (SL) parameter encoded in the segment routing header 208represents a pointer of the active segment in the Segment List, and isdecremented at each segment. Therefore, the encapsulating node (Node 1)sets the numerical value of the SL parameter, in the Segment Routingheader 208, to 2. This identifies Node 2 as the next segment along theSegment Routing path. The O-bit in the segment routing header 208represents an OAM flag which when set indicates that the present packetis an operations and management (OAM) packet.

According to embodiments of the present technology any nodes across theSegment Routing path may be tapped for iOAM data collection. The SegmentRouting (SRv6) packet 212 in FIG. 2 corresponds to a scenario whereby auser/operator wishes to collect iOAM data, on the Segment Routing policypath 202, only at the point of flow transit through the User PlaneFunction 1 (UPF1) at Node 2. In order to enable iOAM data tapping onlyat User Plane Function 1 (UPF1) from Node 2 (i.e., to collect iOAM dataonly from node 2), the ingress Segment Routing Node (Node 1) modifiesthe Segment Identifier (SID) list in the segment routing header 216 to<A4::, A3::C34, A2(1)::>. The referenced portion 217 in the IPv6 header218 indicates that SR capable Node 2_([1] [2]) has iOAM argument bitenabled. The Segment Routing (SRv6) packet 212 is such that the iOAMargument bit is only enabled on Node 2 as denoted by its modified SIDFunction notations A2(1). A2(1) is a clone of A2::SID with iOAM datacollection bit enabled via a bit in the argument field of the A2::SIDfunction. Such a probe as illustrated by 212 will collect iOAM data onlyfrom Node 2.

An example for enabling iOAM data tapping only at the TrafficEngineering or service Node 3 is illustrated in FIG. 3 _([3]). Theexample corresponds to the same Segment Routing Path 202 as FIG. 2. Theencapsulated SRv6 packet 303 in FIG. 3 corresponds to a scenario wherebya user/operator wishes to collect iOAM data on the Segment Routingpolicy path 202 only from the Traffic Engineering or Service Node 3. Inorder to enable iOAM data tapping only at Node 3 (i.e., to collect iOAMdata only from Node 3) the ingress Segment Routing Node (Node 1)modifies the Segment Identifier (SID) list in the segment routing header308 to (A2::, A3::C34 (1), A4::). The referenced portion 317 of thesegment routing header 308 indicates that SR capable Node 3 has iOAMargument bit enabled. The Segment Routing (SRv6) packet 303 is such thatthe iOAM argument bit is only enabled on Node 3 as denoted by itsmodified SID Function notations A3::C34(1). The modified/augmented SIDof Node 3, A3::C34(1), which includes an iOAM probe in the encoded SIDis a clone of the regular SID of Node 3, A3::C34, with the onlydifference being that in the former case iOAM data collection is enabledvia a bit in the argument field of the A3::C34 SID function. Such aprobe as illustrated by 303 will collect iOAM data only from Node 3.

According to some embodiment of the present technology, the modified SIDwith local iOAM probe functionality results from insertion of iOAM probein the argument field of the locally significant portion (i.e. SIDFunction field) of a Segment Identifier. In some embodiments, theingress Segment Routing node may implement iOAM data collection frommultiple nodes by performing a round robin targeting of the nodes acrossthe SID list to collect data in a scalable fashion. A controller entitymay then run analytics routine and operations on the iOAM partial datato build a holistic view. The procedure is applicable for all underlayand overlay SRv6 SID types.

Due to the programmable nature of iOAM SID, as described by someembodiments, iOAM data collection may also be specified and implementedbased on a local decision at a node. Specifically, an iOAM SID mayimplement iOAM data transport using “forward and punt” technique used byNetflow collector. In this case a copy of the packet is exported fromthe “tapping” node (iOAM collection node) to a controller entity withthe requested iOAM information inserted therein. This case is depictedin FIG. 4.

With reference to FIG. 4, at 402 some of the User generated packetssourced from User Equipment (Node 1) are marked for insertion of iOAMprobe. The iOAM augmentation of the SID of the marked packets isexecuted at gNodeB (Node 2) where the user data packet 401 isencapsulated with segment routing header 404. The O-bit in the Segmentrouting Header 404 is set to 1 and the hop limit (HL) is set to 64. Assuch, Node 2 implements a forward and punt mechanism. At each segmentrouting node the enabled O-bit (O-bit=1) of the segment routing headercauses a time-stamped copy of the packet to be punted (405) andprocessed elsewhere.

As described above, a segment routing header (SRH) can be used to steerpackets through paths with given properties (e.g., bandwidth or latency)and through various network functions (e.g., firewalling). The list ofsegments present in the segment routing header thus specifies thenetwork policy that applies to the packet. Each segment routing headercontains at least a list of segments and a Segments Left pointer thatreferences the current active segment (a value of 0 refers to the lastsegment). In addition, an segment routing header can optionally includeextended information encoded as Type-Length-Value (TLV) fields. Anotheruse of TLV is as a global argument field for passing additionalinformation between locally executed SID Functions. An iOAM augmentedSID may implement iOAM data transport inside of the data packet by usingthe TLV fields of the segment routing header. As such iOAM data recordsmay be transported in the respective Type Length Value (TLV) data fieldsof the segment routing header until the flow is terminated at a SegmentRouting egress router. The egress router will decapsulated the user dataand send the segment routing header including the iOAM data insertedinto TLV fields to a controller entity. This case is illustrated in FIG.5.

FIG. 5 illustrates a Segment Routing packet 502 with iOAM probes enabledfor the selected Segment Routing Nodes. The iOAM data generated at eachiOAM tapping point (i.e., Segment Routing nodes with an iOAM argumentbit enabled in the function filed of the respective Segment Identifier)is collected in TLV fields 503 of the segment routing header 504. Node 4is the egress node of the Segment Routing path 202. Therefore, Node 4will decapsulated the Segment Routing packet 502 and export the segmentrouting header 504 with the collected iOAM data in the corresponding TLVfields to a controller entity, using, for example a Netflow collector.The User data packet 505 is then transported to the intendeddestination.

For clarity of explanation, in some instances the present technology maybe presented as including individual functional blocks includingfunctional blocks comprising devices, device components, steps orroutines in a method embodied in software, or combinations of hardwareand software.

An example flow chart 100, as presented in FIG. 6. illustrates targetediOAM probing in Segment Routing context in accordance to someembodiments of the present technology. With reference to FIG. 6, at step602 one or more Segment Routing (SR) nodes for iOAM data tapping totargeted iOAM data collection are identified. The iOAM instruction isencoded as a local argument in the function field of one or more SegmentIdentifiers (SIDs) corresponding to the one or more selected SR nodes atstep 604.

Each SR capable node maintains a “My Local SID Table”. The tablecontains all the local segments explicitly instantiated at the node.Each entry of the “My Local SID Table” indicates the function associatedwith the local SID. As the SR packet travels the network, the Locatorand Function are copied by each SR node to the destination address fieldof the SR header. When the SID inside of the SR header matches Local SIDtable of the SR capable node, the node executes a function encoded inthe right part (Function field) of the SID. The next SID is placed intothe SR Header destination field and the Segment Left Value is decreasedby 1 accordingly.

Referring back to the Flowchart 100 in FIG. 6, at step 606, Destinationaddress field of the SR header is compared with the SID of the SR Nodethe packet is forwarded to. In accordance to some embodiments of thetechnology, if there is a match (Locator portion of the destination SIDmatches the Locator portion of the Node SID and the function field ofthe destination SID is carrying an iOAM probe as argument), theoperation moves to step 608 whereby the iOAM function is executed andthe iOAM data is inserted inside TLV fields of the SR Header. If,however, the result of the comparison at step 606 returns no match, thepacket is forwarded to the next hop along the SR path and step 606 isrepeated until a match is encountered, at which point the operationmoves to step 608 as explained above.

At step 610 the operation verifies whether the current SR node is the SREgress node. If the SR node does not correspond to the SR Egress node,the operation moves back to step 607 and the packet is forwarded to thenext hop along the SR path and the process is repeated. However, if thecomparison at step 610 reveals that the current SR node is the SR Egressrouter, the operation moves to 612 whereby the egress routerdecapsulates the header information and sends the header informationalong with the iOAM data embedded therein to a controller entity forfurther analysis and/or monitoring.

According to some embodiments of the present invention, after verifyinga match at step 606, a duplicate copy of the packet including therequested iOAM data is generated by the SR node and sent to thecontroller entity for further analysis and/or monitoring. The operationis then moved to step 607, whereby the original packet is forwarded tothe next hop along the SR path.

The disclosure now turns to FIGS. 7 and 8, which illustrate examplearchitectures of computing and network devices, such as clientcomputers, switches, routers, controllers, servers, and so forth.

FIG. 7 illustrates a computing system architecture 900 includingcomponents in electrical communication with each other using aconnection 905, such as a bus. System 900 includes a processing unit(CPU or processor) 910 and a system connection 905 that couples varioussystem components including the system memory 915, such as read onlymemory (ROM) 920 and random access memory (RAM) 925, to the processor910. The system 900 can include a cache of high-speed memory connecteddirectly with, in close proximity to, or integrated as part of theprocessor 910. The system 900 can copy data from the memory 915 and/orthe storage device 930 to the cache 912 for quick access by theprocessor 910. In this way, the cache can provide a performance boostthat avoids processor 910 delays while waiting for data. These and othermodules can control or be configured to control the processor 910 toperform various actions. Other system memory 915 may be available foruse as well. The memory 915 can include multiple different types ofmemory with different performance characteristics. The processor 910 caninclude any general purpose processor and a hardware or softwareservice, such as service 1 932, service 2 934, and service 3 936 storedin storage device 930, configured to control the processor 910 as wellas a special-purpose processor where software instructions areincorporated into the actual processor design. The processor 910 may bea completely self-contained computing system, containing multiple coresor processors, a bus, memory controller, cache, etc. A multi-coreprocessor may be symmetric or asymmetric.

To enable user interaction with the computing device 900, an inputdevice 945 can represent any number of input mechanisms, such as amicrophone for speech, a touch-sensitive screen for gesture or graphicalinput, keyboard, mouse, motion input, speech and so forth. An outputdevice 935 can also be one or more of a number of output mechanismsknown to those of skill in the art. In some instances, multimodalsystems can enable a user to provide multiple types of input tocommunicate with the computing device 900. The communications interface940 can generally govern and manage the user input and system output.There is no restriction on operating on any particular hardwarearrangement and therefore the basic features here may easily besubstituted for improved hardware or firmware arrangements as they aredeveloped.

Storage device 930 is a non-volatile memory and can be a hard disk orother types of computer readable media which can store data that areaccessible by a computer, such as magnetic cassettes, flash memorycards, solid state memory devices, digital versatile disks, cartridges,random access memories (RAMs) 925, read only memory (ROM) 920, andhybrids thereof.

The storage device 930 can include services 932, 934, 936 forcontrolling the processor 910. Other hardware or software modules arecontemplated. The storage device 930 can be connected to the systemconnection 905. In one aspect, a hardware module that performs aparticular function can include the software component stored in acomputer-readable medium in connection with the necessary hardwarecomponents, such as the processor 910, connection 905, output device935, and so forth, to carry out the function.

FIG. 8 illustrates an example network device 1000 suitable forperforming switching, routing, assurance, and other networkingoperations. Network device 1000 includes a central processing unit (CPU)1004, interfaces 1002, and a connection 1010 (e.g., a PCI bus). Whenacting under the control of appropriate software or firmware, the CPU1004 is responsible for executing packet management, error detection,and/or routing functions. The CPU 1004 preferably accomplishes all thesefunctions under the control of software including an operating systemand any appropriate applications software. CPU 1004 may include one ormore processors 1008, such as a processor from the INTEL X106 family ofmicroprocessors. In some cases, processor 1008 can be specially designedhardware for controlling the operations of network device 1000. In somecases, a memory 1006 (e.g., non-volatile RAM, ROM, TCAM, etc.) alsoforms part of CPU 1004. However, there are many different ways in whichmemory could be coupled to the system. In some cases, the network device1000 can include a memory and/or storage hardware, such as TCAM,separate from CPU 1004. Such memory and/or storage hardware can becoupled with the network device 1000 and its components via, forexample, connection 1010.

The interfaces 1002 are typically provided as modular interface cards(sometimes referred to as “line cards”). Generally, they control thesending and receiving of data packets over the network and sometimessupport other peripherals used with the network device 1000. Among theinterfaces that may be provided are Ethernet interfaces, frame relayinterfaces, cable interfaces, DSL interfaces, token ring interfaces, andthe like. In addition, various very high-speed interfaces may beprovided such as fast token ring interfaces, wireless interfaces,Ethernet interfaces, Gigabit Ethernet interfaces, ATM interfaces, HSSIinterfaces, POS interfaces, FDDI interfaces, WIFI interfaces, 3G/4G/5Gcellular interfaces, CAN BUS, LoRA, and the like. Generally, theseinterfaces may include ports appropriate for communication with theappropriate media. In some cases, they may also include an independentprocessor and, in some instances, volatile RAM. The independentprocessors may control such communications intensive tasks as packetswitching, media control, signal processing, crypto processing, andmanagement. By providing separate processors for the communicationsintensive tasks, these interfaces allow the master microprocessor 1004to efficiently perform routing computations, network diagnostics,security functions, etc.

Although the system shown in FIG. 8 is one specific network device ofthe present disclosure, it is by no means the only network devicearchitecture on which the concepts herein can be implemented. Forexample, an architecture having a single processor that handlescommunications as well as routing computations, etc., can be used.Further, other types of interfaces and media could also be used with thenetwork device 1000.

Regardless of the network device's configuration, it may employ one ormore memories or memory modules (including memory 1006) configured tostore program instructions for the general-purpose network operationsand mechanisms for roaming, route optimization and routing functionsdescribed herein. The program instructions may control the operation ofan operating system and/or one or more applications, for example. Thememory or memories may also be configured to store tables such asmobility binding, registration, and association tables, etc. Memory 1006could also hold various software containers and virtualized executionenvironments and data.

The network device 1000 can also include an application-specificintegrated circuit (ASIC), which can be configured to perform routing,switching, and/or other operations. The ASIC can communicate with othercomponents in the network device 1000 via the connection 1010, toexchange data and signals and coordinate various types of operations bythe network device 1000, such as routing, switching, and/or data storageoperations, for example.

In some embodiments the computer-readable storage devices, mediums, andmemories can include a cable or wireless signal containing a bit streamand the like. However, when mentioned, non-transitory computer-readablestorage media expressly exclude media such as energy, carrier signals,electromagnetic waves, and signals per se.

Methods according to the above-described examples can be implementedusing computer-executable instructions that are stored or otherwiseavailable from computer readable media. Such instructions can comprise,for example, instructions and data which cause or otherwise configure ageneral purpose computer, special purpose computer, or special purposeprocessing device to perform a certain function or group of functions.Portions of computer resources used can be accessible over a network.The computer executable instructions may be, for example, binaries,intermediate format instructions such as assembly language, firmware, orsource code. Examples of computer-readable media that may be used tostore instructions, information used, and/or information created duringmethods according to described examples include magnetic or opticaldisks, flash memory, USB devices provided with non-volatile memory,networked storage devices, and so on.

Devices implementing methods according to these disclosures can comprisehardware, firmware and/or software, and can take any of a variety ofform factors. Typical examples of such form factors include laptops,smart phones, small form factor personal computers, personal digitalassistants, and so on. Functionality described herein also can beembodied in peripherals or add-in cards. Such functionality can also beimplemented on a circuit board among different chips or differentprocesses executing in a single device, by way of further example.

The instructions, media for conveying such instructions, computingresources for executing them, and other structures for supporting suchcomputing resources are means for providing the functions described inthese disclosures.

Although a variety of examples and other information was used to explainaspects within the scope of the appended claims, no limitation of theclaims should be implied based on particular features or arrangements insuch examples, as one of ordinary skill would be able to use theseexamples to derive a wide variety of implementations. Further andalthough some subject matter may have been described in languagespecific to examples of structural features and/or method steps, it isto be understood that the subject matter defined in the appended claimsis not necessarily limited to these described features or acts. Forexample, such functionality can be distributed differently or performedin components other than those identified herein. Rather, the describedfeatures and steps are disclosed as examples of components of systemsand methods within the scope of the appended claims.

1. A method comprising: encoding an in-situ Operation, Administration,and Maintenance (iOAM) instruction as a local argument in a functionfield defining an end portion of one or more segment identifiersselected from a plurality of segment identifiers in a segment identifierlist of a segment routing header in a first packet, the one or moresegment identifiers corresponding to one or more segment routing nodesselected for iOAM data collection, the encoding performed on the endportion of the one or more segment identifiers; sending the first packetto the one or more segment routing nodes based on the segment routingheader; receiving a second packet containing the iOAM data from the oneor more segment routing nodes selected for the iOAM data collection; andprocessing the iOAM data from the one or more segment routing nodesselected for the iOAM data collection.
 2. (canceled)
 3. The method ofclaim 1, wherein the iOAM data provided by the one or more segmentrouting nodes is inserted into one or more Type, Length, Value (TLV)fields of the segment routing header.
 4. The method of claim 3, whereinthe iOAM data is decapsulated by a Segment Routing egress node and sentto a controller entity.
 5. The method of claim 1, wherein each of theone or more segment routing nodes selected for the iOAM data collectionis configured to send a copy of the segment routing header containingiOAM data to a controller using a collector mechanism.
 6. The method ofclaim 5, wherein the collector mechanism corresponds to a Netflow orIPFIX collector mechanism.
 7. The method of claim 1, further comprising:varying, using a controller entity, the one or more segment routingnodes selected for the iOAM data collection to optimize the iOAM datacollection without increasing iOAM traffic.
 8. The method of claim 7,wherein the controller entity is a Segment Routing Policy Headendrouter.
 9. At least one non-transitory computer-readable storage mediumcomprising instructions stored therein, which when executed by one ormore processors, cause the one or more processors to: encode an in-situOperation, Administration, and Maintenance (iOAM) instruction as a localargument in a function field defining an end portion of one or moresegment identifiers, the one or more segment identifiers selected from aplurality of segment identifiers in a segment identifier list of asegment routing header in a first packet, the one or more segmentidentifiers corresponding to one or more segment routing nodes selectedfor iOAM data collection; send the first packet to the one or moresegment routing nodes based on the segment routing header; receive asecond packet containing the iOAM data from the one or more segmentrouting nodes selected for the iOAM data collection; and process theiOAM data provided by the one or more segment routing nodes tapped forthe iOAM data collection.
 10. (canceled)
 11. The at least onenon-transitory computer-readable storage medium of claim 9, wherein theiOAM data provided by the one or more segment routing nodes is insertedinto one or more Type, Length, Value (TLV) fields of the segment routingheader.
 12. The at least one non-transitory computer-readable storagemedium of claim 11, wherein the iOAM data is decapsulated by a SegmentRouting egress node and sent to a controller entity.
 13. The at leastone non-transitory computer-readable storage medium of claim 9, whereineach of the one or more segment routing nodes selected for the iOAM datacollection is configured to send a copy of the segment routing headercontaining iOAM data to a controller using a collector mechanism
 14. Theat least one non-transitory computer-readable storage medium of claim13, wherein the collector mechanism corresponds to a Netflow or IPFIXcollector mechanism.
 15. The at least one non-transitorycomputer-readable storage medium of claim 9, wherein the instructions,when executed by the one or more processors, further cause the one ormore processors to vary, using a controller entity, the one or moresegment routing nodes selected for the iOAM data collection to optimizethe iOAM data collection without increasing iOAM traffic.
 16. The atleast one non-transitory computer-readable storage medium of claim 15,wherein the controller entity is an Segment Routing Policy Headendrouter.
 17. A system comprising: one or more processors; and at leastone computer-readable storage medium having stored therein instructionswhich, when executed by the one or more processors, cause the system to:encode an in-situ Operation, Administration, and Maintenance (iOAM)instruction in a function field defining an end portion of one or moresegment identifiers, the one or more segment identifiers selected fromplurality of segment identifiers in a segment identifier list of asegment routing header in a first packet, the one or more segmentidentifiers corresponding to one or more segment routing nodes selectedfor iOAM data collection, wherein the segment identifier list representsa segment routing policy path; send the first packet to the one or moresegment routing nodes based on the segment routing header; receive asecond packet containing the iOAM data from the one or more segmentrouting nodes selected for the iOAM data collection; and process theiOAM data in the second packet from the one or more segment routingnodes selected for the iOAM data collection.
 18. (canceled)
 19. Thesystem of claim 17, wherein the iOAM data provided by the one or moresegment routing nodes is inserted into one or more Type, Length, Value(TLV) fields of a second segment routing header associated with thesecond packet.
 20. The system of claim 17, wherein the at least onecomputer-readable storage medium stores additional instructions which,when executed by the one or more processors, cause the system to:decapsulate the segment routing header to yield decapsulated iOAM data;and send the decapsulated iOAM data to a collector entity.